package com.qt.stream;

import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;

/**
 * @Author zsf
 * @Date 2023/9/13 20:02
 * @Version 1.0
 */
public class StreamDemo04 {
    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list,"张三丰-男-18","张三丰-男-18","张无忌-男-18","赵敏-女-18","周芷若-女-18","张强-男-1");

        //把所有 男性 找出来

        List<String> manList = list.stream()
                .filter(s -> "男".equals(s.split("-")[1]))
                .collect(Collectors.toList());

        //System.out.println(manList);

        Set<String> setManList = list.stream()
                .filter(s -> "男".equals(s.split("-")[1]))
                .collect(Collectors.toSet());
        //System.out.println(setManList);

        //toMap转换
        /**
         * toMap :
         *
         *
         * 细节： man的key不能重复 ，否则会报错
         *
         * 参数一 ：
         *      形参一：流中数据类型
         *      形参二：生成键的类型（表示Map集合key的数据类型）
         *
         *      apply方法：
         *          形参--依次获取流中每个数据
         *          方法体：生成键的代码
         *          返回值：生成的键
         *
         * 参数二：
         *       形参一：流中数据类型
         *       形参二：生成值的类型（表示Map集合value的数据类型）
         *
         *      apply方法：
         *            形参--依次获取流中每个数据
         *            方法体：生成值的代码
         *            返回值：生成的值
         */
        Map<String, Integer> manMap = list.stream()
                .filter(s -> "男".equals(s.split("-")[1]))
                .collect(Collectors.toMap(new Function<String, String>() {
                    @Override
                    public String apply(String s) {
                        return s.split("-")[0];
                    }
                }, new Function<String, Integer>() {
                    @Override
                    public Integer apply(String s) {
                        return Integer.valueOf(s.split("-")[2]);
                    }
                }));

        System.out.println(manMap);
        System.out.println("============");

        Map<String, Integer> manMap2 = list.stream()
                .filter(s -> "男".equals(s.split("-")[1]))
                .collect(Collectors.toMap(
                        s -> s.split("-")[0],
                        s -> Integer.valueOf(s.split("-")[1])));

        System.out.println(manMap2);




    }

}
